package com.ranyk.www.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ranyk.www.entity.AdminUser;
import com.ranyk.www.pojo.vo.AdminUserVO;
import com.ranyk.www.support.page.PageInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * CLASS_NAME: UserMapper.java <br/>
 *
 * @author ranyk           <br/>
 * @version V1.0           <br/>
 * @decription: 管理员表 数据访问层接口  <br/>
 * @date: 2022-04-03 <br/>
 */
@Mapper
@Repository
public interface AdminUserMapper extends BaseMapper<AdminUser> {

    /**
     * 根据管理员ID查找管理员信息
     *
     * @param userId 管理员ID
     * @return 返回查询结果 {@link  AdminUserVO}
     */
    AdminUserVO getById(@Param("userId") Long userId);

    /**
     * 根据管理员信息查找管理员列表
     *
     * @param userVo 查询条件封装对象
     * @return 返回查询结果 List 集合,单个实体参见 {@link AdminUserVO}
     */
    List<AdminUserVO> listByUser(AdminUserVO userVo);

    /**
     * 根据分页信息/搜索内容查找管理员列表
     *
     * @param pageInfo  分页信息
     * @param search    搜索内容
     * @param rowBounds 分页实体
     * @return 返回查询结果 List 集合,单个实体对象参见 {@link AdminUserVO}
     */
    List<AdminUserVO> listByPage(@Param("pageInfo") PageInfo pageInfo, @Param("search") String search, RowBounds rowBounds);

    /**
     * 根据组织ID/分页信息/搜索内容查找管理员列表
     *
     * @param organizationId 组织ID
     * @param pageInfo       分页信息
     * @param search         搜索内容
     * @param rowBounds      分页实体
     * @return 返回查询结果 List 集合,单个实体参见 {@link AdminUserVO}
     */
    List<AdminUserVO> listByOrganizationId(@Param("organizationId") Long organizationId, @Param("pageInfo") PageInfo pageInfo, @Param("search") String search, RowBounds rowBounds);

    /**
     * 根据组织ID重置组织ID
     *
     * @param organizationId 组织ID
     * @return 返回更新操作结果
     */
    Integer updateOrganization(@Param("organizationId") Long organizationId);

}